#!/bin/bash
#脚本功能：把常用的图片格式（png、jpg、jpeg、tiff）批量转换为指定的图片格式，并添加文本水印

#函数功能：使用了*通配符来检查字符串中是否有空格。如果字符串包含空格，contains_space函数将返回真（true），否则返回假（false）。
function contains_space() {
    [[ $1 = *\ * ]]
}


#函数功能：把空格全部替换为'_'下划线"
function space2underline(){
	local file_name_old=$1
	# 使用contains_space函数判断文件名中是否含有空格
	if contains_space "$file_name_old"; then
		file_name_new="${file_name_old// /_}"
		mv "$file_name_old" "$file_name_new";
		echo "$file_name_new"
	else
		echo "$file_name_old"
	fi
}


#函数功能：批量为图片添加文本水印
function add_text_watermark(){
	# 文本水印字体路径
	font_path="../scripts/gb-font/国标黑体-GBT2312.ttf"
	# 文本水印颜色
	text_color="#FF69B4" # 红色"#FF0000"，深粉"#FF69B4"，标准粉红"#FFC0CB"，柔和粉"#FFD1DC"
	# 文本水印大小
	text_size=30
	
	# 判断$1参数是否为空，不为空设置用户文本水印
	if [ -z $1 ];then
		local watermark_text="请添加自己的文本水印"
	else
		# 文本水印内容
		local watermark_text=$1
	fi
	
	# 水印位置在图片“左上角”
	# local watermark_position="northwest"
	# 水印位置在图片“右上角”
	# local watermark_position="northeast"
	# 水印位置在图片“左下角”
	# local watermark_position="southwest"
	# 水印位置在图片“右下角”
	# local watermark_position="southeast"
	# 水印位置在图片“正中心”
	# local watermark_position="center"
	
	# 判断$2参数是否为空，不为空，设置用户文本水印位置，为空，则默认文本水印在“左下角”
	if [ -z $2 ];then
		local watermark_position="southwest"
	else
		if [ $2 == "1" ];then
			local watermark_position="northwest"
		elif [ $2 == "2" ];then
			local watermark_position="northeast"
		elif [ $2 == "3" ];then
			local watermark_position="southwest"
		elif [ $2 == "4" ];then
			local watermark_position="southeast"
		elif [ $2 == "5" ];then
			local watermark_position="center"
		else
			local watermark_position="southwest"
		fi
	fi
	
	# 进入output-images-xxx目录
	local new_folder=$4
	cd "$new_folder"
	#for file_name in `ls *.png *.jpg *.jpeg *.tiff`;do
	# 文本水印内容
	local pic_format=$3
	
	for file_name in `ls *.$pic_format`;do
		# echo "文件'$file_name'"
		# 使用ImageMagick的convert命令添加文本水印
		convert "$file_name" -gravity "$watermark_position" -font "$font_path" -pointsize "$text_size" -fill "$text_color" \
    		-annotate  +6+6 "$watermark_text" "$file_name"
			
		echo "文件'$file_name'已经添加文本水印"
	done
}


#函数功能：主函数
function main(){
	echo "温馨提示：仅支持常见的图片格式（webp、png、jpg、jpeg、tiff）才可以转换，其他文件类型不支持！"
	# 文本水印内容
	watermark_text=$1
	# 文本水印位置
	watermark_position=$2
	# 转换后的图片格式
	pic_format=$3
	
	current_datetime=$(date "+%Y-%m-%d %H:%M:%S")
	current_datetime_1=${current_datetime//:/-}
	current_datetime_1=${current_datetime_1// /_}
	
	# 创建新文件夹
	new_folder="output-images_$current_datetime_1"
	# 检查文件夹是否存在
	if [ ! -d "$new_folder" ]; then
    	# 文件夹不存在，创建文件夹
    		mkdir "$new_folder"
	fi
	
	# 存放待转换的图片文件夹
	input_images_folder="input-images"
	# 检查文件夹是否存在
	if [ ! -d "$input_images_folder" ]; then
    	# 文件夹不存在，创建文件夹
    		mkdir "$input_images_folder"
	fi
	# 进入"input-images"目录
	cd "input-images"
	
	#for file_name in `ls *.webp *.png *.jpg *.jpeg *.tiff`;do
	for file_name in *;do
		#echo "文件'${file_name}'"
    	if [ "png" == "${file_name##*.}" ];then
			file_name=$(space2underline "$file_name")
			#echo "$file_name"
        	(convert $file_name `echo ../$new_folder/${file_name//.png/.$pic_format}`) && (echo "${file_name}已成功转为${pic_format}格式") || (echo "${file_name}转换失败")
    	elif [ "jpg" == "${file_name##*.}" ];then
			file_name=$(space2underline "$file_name")
			#echo "$file_name"
        	(convert $file_name `echo ../$new_folder/${file_name//.jpg/.$pic_format}`) && (echo "${file_name}已成功转为${pic_format}格式") || (echo "${file_name}转换失败")
    	elif [ "jpeg" == "${file_name##*.}" ];then
        	file_name=$(space2underline "$file_name")
			#echo "$file_name"
			(convert $file_name `echo ../$new_folder/${file_name//.jpeg/.$pic_format}`) && (echo "${file_name}已成功转为${pic_format}格式") || (echo "${file_name}转换失败")
    	elif [ "tiff" == "${file_name##*.}" ];then
        	file_name=$(space2underline "$file_name")
			#echo "$file_name"
			(convert $file_name `echo ../$new_folder/${file_name//.tiff/.$pic_format}`) && (echo "${file_name}已成功转为${pic_format}格式") || (echo "${file_name}转换失败")
    	elif [ "webp" == "${file_name##*.}" ];then
        	file_name=$(space2underline "$file_name")
			#echo "$file_name"
			(convert $file_name `echo ../$new_folder/${file_name//.webp/.$pic_format}`) && (echo "${file_name}已成功转为${pic_format}格式") || (echo "${file_name}转换失败")
		#else
        	#echo "仅支持常见的图片格式（png、jpg、jpeg、tiff）才可以转换，其他文件'${file_name}'不支持！"
    	fi
	done
	
	# 进入上一级目录
	cd ..
	
	#批量为图片添加文本水印，设置文本水印位置(1:左上角；2：右上角；3：左下角；4：右下角；5：正中心)
	add_text_watermark "$watermark_text" "$watermark_position" "$pic_format" "$new_folder"
}


# ---------------执行主函数-------------------
main $1 $2 $3








